package com.gdth.http.func;

import com.gdth.bank.model.TAppTokenModel;
import com.gdth.coder.CodeUtil;
import com.gdth.exception.HttpException;
import com.gdth.http.entity.HttpAllResult;

import rx.functions.Func1;

public class HttpAllResultFunc<T> implements Func1<HttpAllResult, String>{
	
    @Override
    public String call(HttpAllResult t) {
       
    	if (t == null) {
            throw new HttpException(100);
        }
    	
//        String netcontent = t.getContent();
//       
//        if(null != netcontent) {
//        	String content1 = "";
//        	try {
//				 content1 = Encryption.decrypt(netcontent);
//				 content1 = GZIPUtils.uncompress(content1);
//			} catch (Exception e) {
//				// TODO Auto-generated catch block
//				e.printStackTrace();
//				
//			} 
//            
//        	HttpJsonResult param = JSON.parseObject(content1, HttpJsonResult.class);
//
//	      	 if (param == null) {
//	      		 throw new HttpException(102);
//		      }
        	 if (t.getState() == 200){
     	        String sign = t.getSign();
     	        String content = t.getContent();
     			String privateKey = TAppTokenModel.getPrivateKey();
     			String publicKey = TAppTokenModel.getPublicKeyForServer();
     			
     	        boolean isTrue = CodeUtil.isVerify(content, sign, publicKey);
     	        String value = null;
     	        if (isTrue){
     	        	value = CodeUtil.decryptForLong(content, privateKey);
     	        } else {
     	        	throw new HttpException(400);
     	        }
     	        return value;
             } else{
             	HttpException mHttpException = new HttpException(t.getMessage());
             	throw mHttpException;
             }
         	
//        }else {
//        	 throw new HttpException(102);
//        }
    }
	

}
